package com.wiscamp.ninechapters.panels.domain.repositories;

import com.wiscamp.ninechapters.panels.domain.entities.Application;
import cube.ddd.common.query.PagedObjects;
import cube.ddd.common.query.PagedQuery;

import java.util.Collection;

public interface ApplicationRepository {

    Application getApplication(long appId);

    Application getApplicationByCode(String appCode);

    Collection<Application> getApplicationsByGroup(String appGroup);

    Collection<Application> getApplicationsByName(String appName);

    Collection<Application> getAvailableApplications();

    Collection<Application> getApplicationsByIds(Collection<Long> appIds);

    PagedObjects<Application> getApplicationsByQuery(PagedQuery query);

    Application saveApplication(Application app);
}
